100 REM COPYRIGHT 1988 COMPUTE! PUBLICATIONS, INC. - ALL RIGHTS RESERVED 110 LC$=CHR$(14):RE$=CHR$(15):GM$=CHR$(8):NR=7 120 DIM CM(255) 130 DIMMO$(12),LD(12),DA$(60),MS$(50,NR+1),DD$(2,60),L$(20),ML$(18),C(255) 140 SP$=" ":FORI=0TO5:SP$=SP$+SP$:NEXT:SP$=LEFT$(SP$,31):SS$=LEFT$(SP$,10) 150 POKE53280,15:POKE53281,11 160 PRINT"[155][147]" 170 PRINTTAB(11)"MONTHLY CALENDAR " 190 PRINTTAB(11)" COPYRIGHT 1989 " 200 PRINTTAB(7)"COMPUTE! PUBLICATIONS, INC." 210 PRINTTAB(10)"ALL RIGHTS RESERVED" 220 FORI=27 TO 127:CM(I)=1:CM(I+128)=1:NEXT 230 I=2 240 READ A:IF A=-1 THEN270 250 CM(A)=I:I=I+1:GOTO240 260 DATA 17,145,29,157,147,13,19,20,148,95,-1 270 I=0 280 READ A$ 290 T=ASC(LEFT$(A$,1)):C(T)=I+1 300 A$(I)=CHR$(49+I)+" "+CHR$(T)+"[146]"+RIGHT$(A$,LEN(A$)-1) 310 I=I+1:IF A$<>"QUIT" THEN280 320 DATA "NEW CALENDAR","YEAR AND MONTH",MEMO,"ENHANCE DATES",PRINT,SAVE,LOAD 330 DATA QUIT 340 FORH=1TO12:READMO$(H),LD(H):NEXTH 350 N4=I-1 360 FORI=0 TO N4:PRINT:PRINTSPC(12) A$(I):NEXT 370 GETA$:IF A$="" THEN370 380 A2=ASC(A$):IF C(A2) THEN A2=C(A2):GOTO410 390 V=VAL(A$):IF V>0 AND V<=I THEN A2=V:GOTO410 400 GOTO370 410 ON A2 GOSUB3070,450,2170,1430,920,2310,2500,2070 420 PRINT"[147]":GOTO360 430 PRINT"[147]":IF YR$="" THEN PRINT"CHOOSE YEAR AND MONTH FIRST":GOSUB460:GOTO430 440 RETURN 450 PRINT"[147]" 460 PRINT"ENTER CALENDAR YEAR: "; 470 INPUT T$ 480 IF T$="" THEN RETURN 490 IF VAL(T$)<100 OR VAL(T$)>9999THEN GOTO450 500 YR$=T$:Y=VAL(YR$) 510 PRINT"[147]" 520 PRINT"SELECT MONTH(1-12)" 530 FORI=1TO9:PRINTTAB(10)"[144]"I"[155]"MO$(I):NEXT 540 FORI=10TO12:PRINTTAB(9)"[144]"I"[155]"MO$(I):NEXT 550 INPUT"ENTER MONTH";NU$ 560 NU=VAL(NU$):IFNU>=1ANDNU<=12THENHH=0:GOTO610 570 FORI=1TO12 580 IFNU$=MO$(I)THENNU=I:HH=0:GOTO610 590 NEXTI 600 GOTO520 610 REM CALCULATIONS 620 LD(2)=28:GOSUB2080 630 A=(Y/100):B=INT(Y/100):C=A-B 640 IFC=0THEN680 650 A=(Y/4):B=INT(Y/4):C=A-B 660 IFC=0THENAD=1:GOTO710 670 AD=0:GOTO710 680 A=(Y/400):B=INT(Y/400):C=A-B 690 IFC=0THENAD=1:GOTO710 700 AD=0:GOTO710 710 A=INT(Y/4):B=INT(Y/400):C=INT(Y/100):D=A+B-C 720 E=(Y+D)/7:F=INT((Y+D)/7):G=(E-F)*7:SD=INT(G):H=G-SD 730 IFH>.9THENSD=SD+1 740 SD=SD-AD 750 IFSD<0THENSD=SD+7 760 ONNUGOSUB1310,1320,1330,1340,1350,1360,1370,1380,1390,1400,1410,1420 770 IFDS>6THENDS=DS-7 780 IFDS<0THENDS=DS+7 790 D=0:IFFLAG=1THENFLAG=0:GOTO810 800 IFHH<>0THENRETURN 810 FORI=1TO50 820 IFI-DS<=0THENDA$(I)="":GOTO850 830 IFI-DS>LD(NU)THENDA$(I)="":GOTO850 840 DA$(I)=STR$(I-DS):DA$(I)=RIGHT$(DA$(I),LEN(DA$(I))-1) 850 NEXTI 860 IFDS=0ANDLD(NU)=28THENR=4:GOTO890 870 IFDA$(36)=""THENR=5:GOTO890 880 R=6 890 HD$=MO$(NU)+" "+YR$ 900 CS=INT((40-LEN(HD$))/2) 910 RETURN 920 GOSUB430:IF A2<>5 THEN950 930 T$="INCLUDE MEMO BAR IN PRINT OUT":GOSUB3030 940 MB$="N":IF Q THEN MB$="Y" 950 PRINT"[147]MAKE SURE PRINTER IS ON..." 960 PRINT"_ FOR MENU, ANY OTHER KEY TO PRINT" 970 GETCH$:IFCH$=""THEN970 980 IF CH$="_" THEN RETURN 990 GOSUB2100:CLOSE5:OPEN5,4,6:OPEN4,4:PRINT#4,LC$;TAB(CS)HD$;RE$; 1000 PRINT#4:PRINT#5,CHR$(20) 1010 PRINT#4,"[176][192][192][192][192][192][192][192][192][192][192][178][192][192][192][192][192][192][192][192][192][192][178][192][192][192][192][192][192][192][192][192][192][178][192][192][192][192][192][192][192][192][192][192][178][192][192][192][192][192][192][192][192][192][192][178][192][192][192][192][192][192]"; 1020 PRINT#4,"[192][192][192][192][178][192][192][192][192][192][192][192][192][192][192][174]";GM$ 1030 PRINT#4,RE$;"[221]SUNDAY [221]MONDAY [221]TUESDAY [221]WEDNESDAY [221]THURSDAY "; 1040 PRINT#4,"[221]FRIDAY [221]SATURDAY [221]";GM$ 1050 GOSUB1280 1060 FORI=1TOR 1070 GOSUB1280 1080 PRINT#4,RE$; 1090 FORZ=1TO7:TB=(Z)*11:TB$=STR$(TB):TB$=RIGHT$(TB$,2) 1100 PRINT#4,"[221]";LC$;DA$(D+Z);RE$;CHR$(16)+TB$; 1110 NEXT Z 1120 PRINT#4,CHR$(16)+"77";"[221]";GM$ 1130 PRINT#4,RE$;:D7=D-DS 1140 FORTT=1TONR 1150 FORT=1TO7:TB=(T)*11:TB$=STR$(TB):TB$=RIGHT$(TB$,2) 1160 D8=D7+T:IF D8<0 OR D8>31 THEN T$=SS$:GOTO1180 1170 T$=MS$(D7+T,TT-1) 1180 PRINT#4,"[221]";T$;CHR$(16)+TB$; 1190 NEXT T 1200 PRINT#4,CHR$(16)+"77";"[221]";GM$ 1210 PRINT#4,RE$; 1220 NEXT TT 1230 D=D+7:NEXTI 1240 IFMB$="N"THEN2120 1250 PRINT#4,RE$;"[171][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][219][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][219][192][192][192][192][192]"; 1260 PRINT#4,"[192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][179]"GM$ 1270 CLOSE4,4:GOTO1700 1280 PRINT#4,RE$;"[171][192][192][192][192][192][192][192][192][192][192][219][192][192][192][192][192][192][192][192][192][192][219][192][192][192][192][192][192][192][192][192][192][219][192][192][192][192][192][192][192][192][192][192][219][192][192][192][192][192][192][192][192][192][192][219][192][192][192][192]"; 1290 PRINT#4,"[192][192][192][192][192][192][219][192][192][192][192][192][192][192][192][192][192][179]";GM$ 1300 RETURN 1310 DS=SD:RETURN 1320 DS=SD+3:LD(NU)=LD(NU)+AD:RETURN 1330 DS=SD+3+AD:RETURN 1340 DS=SD-1+AD:RETURN 1350 DS=SD+1+AD:RETURN 1360 DS=SD+4+AD:RETURN 1370 DS=SD-1+AD:RETURN 1380 DS=SD+2+AD:RETURN 1390 DS=SD+5+AD:RETURN 1400 DS=SD+AD:RETURN 1410 DS=SD+3+AD:RETURN 1420 DS=SD+5+AD:RETURN 1430 REM ENHANCE DATES 1440 PRINT"[147]":IF YR$="" THEN PRINT"CHOOSE YEAR AND MONTH FIRST":GOSUB460 1450 DU=0:PRINT"[147][155]"; 1460 PRINTHD$ 1470 PRINT"SUN MON TUE WED THU FRI SAT" 1480 FORU=0TO5 1490 FORUU=1TO7 1500 DO=(UU-1)*5:PRINTTAB(DO)DA$(UU+DU); 1510 T=U*7+UU 1520 NEXTUU 1530 PRINT"":DU=DU+7 1540 NEXTU 1550 PRINT" INPUT 'Q' WHEN FINISHED ENHANCING DATES":INPUT "ENTER DATE";MD$ 1560 IF MD$="Q" OR MD$="[209]" THEN RETURN 1570 MD=VAL(MD$) 1580 IFMD<1 OR MD>LD(NU)THENPRINT"[145][145][145][145]":GOTO1550 1590 PR$="[147]ENTER MESSAGE FOR[144] "+MO$(NU)+ " "+STR$(MD)+"[155]" 1600 B$="":H=NR:W=10 1610 FOR I=0 TO NR 1620 T$=MS$(MD,I):IF LEN(T$)<>W THEN T$=SS$ 1630 B$=B$+T$ 1640 NEXT 1650 GOSUB2630:J=0 1660 FOR I=1 TO H*W+1 STEP W 1670 MS$(MD,J)=MID$(B$,I,W):J=J+1 1680 NEXT 1690 GOTO1450 1700 IFNU=1THENN1=12:N2=2:Y(1)=Y-1:Y(2)=Y:GOTO1730 1710 IFNU=12THENN1=11:N2=1:Y(1)=Y:Y(2)=Y+1:GOTO1730 1720 N1=NU-1:N2=NU+1:Y(1)=Y:Y(2)=Y 1730 NU=N1:Y=Y(1):HH=1:CH=1:D=0 1740 GOSUB620 1750 D=0 1760 FORI=1TO50 1770 IFI-DS<=0THENDD$(HH,I)=" ":GOTO1810 1780 IFI-DS>LD(NU)THENDD$(HH,I)=" ":GOTO1810 1790 IFI-DS<10THENDD$(HH,I)=" "+STR$(I-DS):GOTO1810 1800 DD$(HH,I)=STR$(I-DS) 1810 NEXTI:HD$(HH)=MO$(NU)+" "+STR$(Y(HH)):CS(HH)=INT((22-LEN(HD$(HH)))/2) 1820 IFHH=2THENCS(HH)=CS(HH)+56 1830 CS$(HH)=STR$(CS(HH)):CS$(HH)=RIGHT$(CS$(HH),2) 1840 IFHH=1THENHH=2:NU=N2:Y=Y(2):GOSUB620:GOTO1750 1850 L$(1)="[221]"+CHR$(16)+"22[221]"+CHR$(16)+"55[221]"+CHR$(16)+"77[221]" 1860 L$(2)="[221]"+CHR$(16)+CS$(1)+HD$(1)+CHR$(16)+"22[221]"+LC$+" MEMOS"+RE$ 1870 L$(2)=L$(2)+CHR$(16)+"55[221]"+CHR$(16)+CS$(2)+HD$(2)+CHR$(16)+"77[221]" 1880 L$(3)=L$(1) 1890 L$(4)="[221] SU MO TU WE TH FR SA[221]" 1900 L$(4)=L$(4)+CHR$(16)+"55[221] SU MO TU WE TH FR SA[221]" 1910 L$(5)=L$(1):J=6 1920 FORI=6TO18STEP2 1930 L$(I)="[221]" 1940 FORII=1TO7 1950 L$(I)=L$(I)+DD$(1,II+D) 1960 NEXTII 1970 T$=ML$(J):IF LEN(T$)<31 THEN T$=SP$:ML$(J)=SP$ 1980 L$(I)=L$(I)+CHR$(16)+"22[221] "+T$+"[221]":J=J+1 1990 FORII=1TO7:L$(I)=L$(I)+DD$(2,D+II):NEXTII 2000 L$(I)=L$(I)+CHR$(16)+"77[221]" 2010 L$(I+1)=L$(1) 2020 D=D+7:NEXTI 2030 L$(18)="[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]" 2040 L$(18)=L$(18)+"[192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]" 2050 GOSUB2100:OPEN4,4:FORI=1TO18:PRINT#4,RE$;L$(I);GM$:NEXTI 2060 CLOSE4,4:Y=VAL(YR$):NU=VAL(NU$):GOSUB620:RETURN 2070 POKE 53280,14:POKE53281,6:PRINT"[147][154]";:CLR:END 2080 PRINT"[147][144]CALCULATING...[155]" 2090 RETURN 2100 PRINT"[147]PRINTING[146]...(PRESS RUN/STOP TO ABORT)[155]" 2110 RETURN 2120 PRINT#4,RE$;"[173][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][177][192][192][192]"; 2130 PRINT#4,"[192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][189]";GM$ 2140 GOTO2060 2150 DATA JANUARY,31,FEBRUARY,28,MARCH,31,APRIL,30,MAY,31,JUNE,30,JULY,31 2160 DATA AUGUST,31,SEPTEMBER,30,OCTOBER,31,NOVEMBER,30,DECEMBER,31 2170 PR$="ENTER MEMOS" 2180 B$="":W=31:H=6 2190 FORX=6TO12 2200 T$=ML$(X):T$=T$+LEFT$(SP$,W-LEN(T$)):B$=B$+T$ 2210 NEXT 2220 GOSUB2630 2230 FOR X=6 TO 12 2240 ML$(X)=ML$(X)+LEFT$(SP$,(31-LEN(ML$(X)))):NEXT:X=6 2250 FOR I=1 TO H*W+1 STEP W 2260 T$=MID$(B$,I,W):IF T$=S2$ THEN T$=" " 2270 ML$(X)=T$:X=X+1 2280 NEXT 2290 ML$(13)=SP$ 2300 RETURN 2310 GOSUB430:NM$="":INPUT"[147]FILENAME FOR SAVE";NM$ 2320 IF NM$="" THENRETURN 2330 OPEN15,8,15,"I0":OPEN2,8,2,NM$+",W,S":INPUT#15,EN,EM$,ET,ES 2340 IFEN>1THENPRINTEN;EM$;ET;ES:FORI=1TO300:NEXTI:CLOSE2:CLOSE15:GOTO2310 2350 PRINT"[147]";TAB(10)"SAVING CALENDAR ...." 2360 FORP=1TO31 2370 FORQ=0TONR 2380 T$=MS$(P,Q) 2390 IF T$="" THENT$=SS$ 2400 PRINT#2,"X"T$"X" 2410 NEXTQ:NEXTP 2420 FORP=6TO12:T$=ML$(P) 2430 IF LEN(T$)<>31 THEN T$=T$+LEFT$(SP$,31-LEN(T$)) 2440 PRINT#2,"X"T$"X":NEXTP 2450 IF MB$="" THEN MB$="N" 2460 IF HD$="" THEN HD$=" " 2470 IF YR$="" THEN YR$="1989" 2480 PRINT#2,MB$:PRINT#2,HD$:PRINT#2,YR$:PRINT#2,NU$ 2490 CLOSE2:CLOSE15:X=FRE(0):RETURN 2500 NM$="":INPUT"[147]FILENAME TO LOAD";NM$ 2510 IF NM$="" THENRETURN 2520 OPEN15,8,15,"I0":OPEN2,8,2,NM$+",S,R":INPUT#15,EN,EM$,ET,ES 2530 IFEN>1THENPRINTEN;EM$;ET;ES:FORI=1TO300:NEXTI:CLOSE2:CLOSE15:GOTO2500 2540 PRINT"[147]";TAB(10)"LOADING CALENDAR ...." 2550 FORP=1TO31:FORQ=0TONR 2560 INPUT#2,T$:MS$(P,Q)=MID$(T$,2,10) 2570 NEXTQ:NEXTP 2580 FORP=6TO12 2590 INPUT#2,T$:ML$(P)=MID$(T$,2,31) 2600 NEXTP 2610 INPUT#2,MB$,HD$,YR$,NU$:Y=VAL(YR$):NU=VAL(NU$) 2620 CLOSE2:CLOSE15:GOSUB620:X=FRE(0):RETURN 2630 PY=Y 2640 X=0:Y=0:MT=H*W+1:PRINT"[147]";PR$:PRINT"PRESS _ WHEN DONE" 2650 PRINT"":PRINTTAB(W)"[204]":FORI=1 TO H:PRINT:NEXT:PRINTTAB(W)"[207]" 2660 PRINT"":FOR I=1 TO H*W+1 STEP W 2670 PRINTMID$(B$,I,W):NEXT 2680 T=X+Y*40+1144:IF X=W THEN T=T-X+40 2690 POKE T,PEEK(T) OR 128 2700 GETA$:IF A$="" THEN2700 2710 A=ASC(A$) 2720 ON CM(A) GOTO2950,2740,2760,2780,2810,2840,2850,2890,2900,3000,3020 2730 GOTO2700 2740 IF Y0 THEN Y=Y-1:GOTO2660 2770 GOTO2700 2780 X=X+1:IF X0 THEN2660 2820 IF Y>0 THEN X=W-1:Y=Y-1:GOTO2660 2830 X=0:GOTO2660 2840 B$="":FORI=1 TO H*W+1:B$=B$+" ":NEXT:GOTO2640 2850 IF Y=H-1 THEN3020 2860 IF X=W AND Y=H-2 THEN3020 2870 IF X=W THEN Y=Y+2:GOTO2660 2880 X=0:Y=Y+1:GOTO2660 2890 X=0:Y=0:GOTO2660 2900 A$="":X=X-1:IF X=>0 THEN2930 2910 IF Y>0 THEN X=W-1:Y=Y-1:GOTO2930 2920 X=0:GOTO2700 2930 T=X+Y*W 2940 L=LEN(B$):B$=LEFT$(B$,T)+RIGHT$(B$,L-T-1)+" ":GOTO2660 2950 T=X+Y*W:IF T=>MT THEN2700 2960 L=LEN(B$):B$=LEFT$(B$,T)+A$+RIGHT$(B$,L-T-1) 2970 X=X+1:IF X